import Vue from 'vue'
import VueRouter from 'vue-router'

// 注册VueRouter插件
Vue.use(VueRouter)
// 静态路由（所有用户都可访问）
const staticRoutes = [
    {
        // 支持的请求地址除/newsList以及，还支持/news
        path: "/login",
        name: "登录",
        component: () => import("@/views/Login/Login.vue"),
        meta: {
            public: true,
            title: "登录"
        }
    },
]
// 创建路由实例
const createRouter = () => new VueRouter({
    mode: 'history', // 使用history模式
    scrollBehavior: () => ({y: 0}), // 滚动行为，滚动到顶部
    routes: [...staticRoutes] // 初始路由只有静态路由
})
// 解决重复导航问题
let originPush = VueRouter.prototype.push  // 备份一下VueRouter原型对象的方法
let originReplace = VueRouter.prototype.replace
// 重写push|replace
// 第一个参数，告诉原来的push方法，你往哪里跳转，传递那些参数
// 第二个参数：成功的回调
// 第三个参数：失败的回调
// call || apply区别：
// 相同点：都可以调用函数一次，都可以篡改函数的上下文一次
// 不同点： call与apply传递参数，call传递参数用逗号隔开，apply方法执行，传递数组
VueRouter.prototype.push = function (location, resolve, reject) {
    if (resolve && reject) {
        originPush.call(this, location, resolve, reject)
    } else {
        originPush.call(this, location, () => {
        }, () => {
        })
    }
}
VueRouter.prototype.replace = function (location, resolve, reject) {
    if (resolve && reject) {
        originReplace.call(this, location, resolve, reject)
    } else {
        originReplace.call(this, location, () => {
        }, () => {
        })
    }
}
const router = createRouter()
export default router